Fixed gtk_cell_area_box_context_copy() to also copy it's allocations.
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Mon, 13 Dec 2010 06:37:12 +0000 (15:37 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Mon, 13 Dec 2010 06:37:12 +0000 (15:37 +0900)
gtk/gtkcellareaboxcontext.c

index fbf6ffea1d8fe7fc8add4abe47969455b8bd520b..fe61b45e0f1bac97a6a835cb2e4fee1e2f8fd56a 100644 (file)
@@ -527,27 +527,37 @@ for_size_copy (gpointer    key,
 
 GtkCellAreaBoxContext *
 gtk_cell_area_box_context_copy (GtkCellAreaBox        *box,
-                               GtkCellAreaBoxContext *box_context)
+                               GtkCellAreaBoxContext *context)
 {
-  GtkCellAreaBoxContext *context;
-
-  context = g_object_new (GTK_TYPE_CELL_AREA_BOX_CONTEXT, 
-                         "area", box, NULL);
-
-  gtk_cell_area_box_init_groups (context, 
-                                box_context->priv->base_widths->len,
-                                box_context->priv->expand);
-
-  /* Copy all the arrays */
-  copy_size_array (box_context->priv->base_widths, 
-                  context->priv->base_widths);
-  copy_size_array (box_context->priv->base_heights, 
-                  context->priv->base_heights);
-
-  g_hash_table_foreach (box_context->priv->heights,
-                       (GHFunc)for_size_copy, context->priv->heights);
-  g_hash_table_foreach (box_context->priv->widths,
-                       (GHFunc)for_size_copy, context->priv->widths);
+  GtkCellAreaBoxContext *copy;
+
+  copy = g_object_new (GTK_TYPE_CELL_AREA_BOX_CONTEXT, 
+                      "area", box, NULL);
+
+  gtk_cell_area_box_init_groups (copy, 
+                                context->priv->base_widths->len,
+                                context->priv->expand);
+
+  /* Copy the base arrays */
+  copy_size_array (context->priv->base_widths, 
+                  copy->priv->base_widths);
+  copy_size_array (context->priv->base_heights, 
+                  copy->priv->base_heights);
+
+  /* Copy each for size */
+  g_hash_table_foreach (context->priv->heights,
+                       (GHFunc)for_size_copy, copy->priv->heights);
+  g_hash_table_foreach (context->priv->widths,
+                       (GHFunc)for_size_copy, copy->priv->widths);
+
+  /* Copy any active allocation */
+  copy->priv->n_orientation_allocs = 
+    context->priv->n_orientation_allocs;
+
+  if (copy->priv->n_orientation_allocs)
+    copy->priv->orientation_allocs = 
+      g_memdup (context->priv->orientation_allocs, 
+               copy->priv->n_orientation_allocs * sizeof (GtkCellAreaBoxAllocation));
 
   return context;
 }